//
//  TryHoneStringHelper.h
//  TryHone
//
//  Created by TryHone on 17/5/23.
//  Copyright © 2017年 TryHone. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef NSString* (^ReplaceBlock)(NSString*,NSInteger);

@interface JFStringHelper : NSObject
/**
 *  @author Alan, 17-05-24 10:05:17
 *
 *  @brief 判断字符串是否包含中文字符
 *
 *  @param str 字符串
 *
 *  @return 返回判断值
 */
+(BOOL)isContainChinese:(NSString*)str;
/**
 *  判断字符串是否为空，空格也算空
 *
 *  @param str 需要判断的字符串
 *
 *  @return YES,NO
 */
+(BOOL)isEmpty:(NSString *)str;
/**
 *  判断字符串是否为非空
 *
 *  @param str 需要判断的字符串
 *
 *  @return YES,NO
 */
+(BOOL)isNotEmpty:(NSString *)str;
/**
 *  产生num位随机数
 *
 *  @param num 随机数的位数
 *
 *  @return 生成的随机数
 */
+(NSString *)stringWithRandom:(NSUInteger)num;
/**
 *  全部替换字符串，支持正则表达式
 *
 *  @param srcStr 原字符串
 *  @param oldStr 需要替换的字符串，支持正则表达式
 *  @param newStr 用来替换的字符串
 *
 *  @return 替换后新的字符串
 */
+(NSString *)stringWithReplace:(NSString *)srcStr oldStr:(NSString *)oldStr newStr:(NSString *)newStr;
/**
 *  全部替换字符串，支持正则表达式
 *
 *  @param srcStr 原字符串
 *  @param oldStr 需要替换的字符串，支持正则表达式
 *  @param block  用于处理替换的块函数 NSString* ^(NSString*,int)
 *
 *  @return 替换后新的字符串
 */
+(NSString *)stringWithReplace:(NSString *)srcStr oldStr:(NSString *)oldStr block:(ReplaceBlock)block;
/**
 * 去掉两边的空格，如果入参是nil自动转换为空字符串
 *
 *  @param str 需要操作的字符串
 *
 */
+(NSString *)stringWithTrim:(NSString *)str;
/**
 *  判断字符串是否以指定的字符串开头
 *
 *  @param srcStr 源字符串
 *  @param str    要判断的字符串的值
 *
 *  @return YES,NO
 */
+(BOOL)string:(NSString *)srcStr beginWith:(NSString *)str;
/**
 *  判断字符串是否以指定的字符串结尾
 *
 *  @param srcStr 源字符串
 *  @param str    要判断的字符串的值
 *
 *  @return YES,NO
 */
+(BOOL)string:(NSString *)srcStr endWith:(NSString *)str;
/**
 *  截取字符串
 *
 *  @param srcStr 原字符串
 *  @param begin  开始索引
 *  @param end    结束索引
 *
 *  @return 截取的字符串
 */
+(NSString *)subStringWith:(NSString *)srcStr fromIndex:(NSInteger)begin toIndex:(NSInteger)end;
/**
 *  截取字符串
 *
 *  @param srcStr 原字符串
 *  @param begin  开始索引
 *  @param count  截取数目
 *
 *  @return 截取的字符串
 */
+(NSString *)subStringWith:(NSString *)srcStr fromIndex:(NSInteger)begin count:(NSInteger)count;

/**
 *  查找字符串
 *
 *  @param srcStr 原字符串
 *  @param str    要查找的字符串
 *
 *  @return 返回字符串的位置，没有返回-1
 */
+(NSInteger)string:(NSString *)srcStr indexOf:(NSString *)str;

/**
 *  查找最后匹配的字符串
 *
 *  @param srcStr 原字符串
 *  @param str    要查找的字符串
 *
 *  @return 返回字符串的位置，没有返回-1
 */
+(NSInteger)string:(NSString *)srcStr lastIndexOf:(NSString *)str;

/**
 *  分割字符串,分隔符支持正则表达式
 *
 *  @param srcStr 原字符串
 *  @param str    分割符,支持正则表达式
 *
 *  @return 字符串数组
 */
+(NSArray *)string:(NSString *)srcStr splitWith:(NSString *)str;

/**
 *  字符串数组链接
 *
 *  @param array 字符串数组
 *
 *  @return 链接后的字符串
 */
+(NSString *)stringWithArray:(NSArray *)array;

/**
 *  获取Url的参数
 *
 *  @param url 地址
 *
 *  @return 参数数据字典
 */
+(NSDictionary *)getUrlParam:(NSString *)url;

/**
 *  根据正则表达式找到第一个满足的子串
 *
 *  @param srcStr 原字符串
 *  @param regExp 正则表达式
 *
 *  @return 子字符串
 */
+(NSString *)firstSubStringWith:(NSString *)srcStr byRegExp:(NSString *)regExp;

/**
 *  根据正则表达式找到最后一个满足的子串
 *
 *  @param srcStr 原字符串
 *  @param regExp 正则表达式
 *
 *  @return 子字符串
 */
+(NSString *)lastSubStringWith:(NSString *)srcStr byRegExp:(NSString *)regExp;

/**
 *  根据正则表达式找到所有满足的字符串
 *
 *  @param srcStr 原字符串
 *  @param regExp 正则表达式
 *
 *  @return 子字符串数组
 */
+(NSArray *)subStringsWith:(NSString *)srcStr byRegExp:(NSString *)regExp;

/**
 *  URL编码
 *
 *
 *  @return utf-8编码的结果
 */
+(NSString *)encodeURL:(NSString *)url;

/**
 *  URL解码
 *
 *
 *  @return utf-8解码的结果
 */
+(NSString *)decodeURL:(NSString *)url;

/**
 *
 *  UTF-8转Unicode
 *
 *  @param str 字符串
 *
 *  @return Unicode字符串
 */
+(NSString *)utfToUnicode:(NSString *)str;

/**
 *
 *  Unicode转成UTF-8
 *
 *  @param str 字符串
 *
 *  @return UTF-8
 */
+(NSString *)unicodeToUTF:(NSString *)str;


/**
 *  @Author TryHone, 2016年05月31日14:17:20
 *
 *  把字符串转化为小写字符串
 *
 *  @param str 字符串
 *
 *  @return 小写的字符串
 */
+(NSString *)lowercaseString:(NSString *)str;

/**
 *  @Author TryHone, 2016年05月31日14:17:20
 *
 *  把字符串转化为大写字符串
 *
 *  @param str 字符串
 *
 *  @return 大写的字符串
 */
+(NSString *)uppercaseString:(NSString *)str;


/**
 *  @Author TryHone, 2016年05月31日14:17:20
 *
 *  未适配安卓的时间戳
 *  @return 大写的字符串
 */
+(NSString *)timestampString;

/**
 *  @Author TryHone, 2016年05月31日14:17:20
 *  获取时间戳*1000可以适配android的时间戳
 *  @return 大写的字符串
 */
+(NSString *)timestampString1000;

/**
 *  @Author TryHone, 2016年05月31日14:17:20
 *  string 是否包含subStr字符串
 *  @return 是否包含的BOOL 值
 */
+ (BOOL)stringContain:(NSString *)string subStr:(NSString *)subStr;


+ (CGFloat)getHeightLineWithString:(NSString *)string lineSpacing:(CGFloat)linespace withWidth:(CGFloat)width withFont:(UIFont *)font;
+ (CGFloat)getHeightLineWithString:(NSString *)string lineSpacing:(CGFloat)linespace wordSpacing:(CGFloat)wordSpacing withWidth:(CGFloat)width withFont:(UIFont *)font;

+ (CGFloat)getWidthLineWithString:(NSString *)string lineSpacing:(CGFloat)linespace withHeight:(CGFloat)height withFont:(UIFont *)font;

+ (CGFloat)getWidthLineWithString:(NSString *)string lineSpacing:(CGFloat)linespace wordSpacing:(CGFloat)wordSpacing withHeight:(CGFloat)height withFont:(UIFont *)font;


+(CGFloat)getHeightOfFont:( UIFont*)font;

//无换行
+(CGSize)getFontSizeOfStr:( NSString*)str Font:( UIFont*)font;

+(CGFloat)getHeightOfStr:( NSString*)str Font:( UIFont*)font Width:(CGFloat)fWidth;

//获取固定宽度内字体的实际大小
+(CGFloat)getFontSizeForWidth:(CGFloat)width;

+(CGFloat)getFontWidthStr:(nullable NSString*)str withFont:(nullable UIFont*)font;

//比较版本号大小 1 v1 > v2 0 v1=v2 -1 v1 < v2
+ (NSInteger)compareVersion2:(NSString *_Nullable)v1 to:(NSString *_Nullable)v2;

//国际化字符串
+ (NSString * __nullable)internationalString:(NSString * __nullable)content;
+ (NSArray * __nullable)internationalArray:(NSArray * __nullable)array;

+ (NSString * __nullable)chineseStringCN:(NSString *)content;

//千分位格式化数据
+ (NSString *_Nonnull)positiveFormat:(NSString *_Nullable)text;
//千分位格式化数据 整数型不保留小数
+ (NSString *_Nonnull)positiveFormat2:(NSString *_Nullable)text;
//千分位格式化数据 保留3位小数
+ (NSString *_Nonnull)positiveFormat3:(NSString *_Nullable)text;
//千分位格式化数据
+ (NSString *_Nonnull)positiveFormatFloat:(CGFloat)vaule;
//千分位格式化数据 保留两位小数 不4舍五入
+ (NSString *_Nonnull)positiveFormatFloat2:(CGFloat)vaule;



@end
